package jmine.tec.report.export;

import java.io.IOException;
import java.io.OutputStream;

import jmine.tec.report.api.batch.ReportCreator;

/**
 * Exportados de relatórios em batch. Possui registro de diversos ReportCreators que recebem um filtro em comum <br/>
 * <br/>
 * 
 * @author lundberg
 */
public interface BatchReportExporter {

    /**
     * Cria os relatórios registrados baseado no parâmetro dado, empacotando tudo em um zip e enviando para o outputstream.
     * 
     * @param outputStream outputStream
     * @throws IOException IOException
     */
    void export(OutputStream outputStream) throws IOException;

    /**
     * Adiciona um relatório ao conjunto de relatórios que será criado
     * 
     * @param report report
     * @param parameter parameter
     * @param <F> tipo de filtro do relatório
     * @throws IOException IOException
     */
    <F> void addReport(ReportCreator<F> report, F parameter) throws IOException;
}
